/**
 * The MIT License (MIT)
 * 
 * Copyright (c) 2016 mo_yq5 (mo_yq5@163.com)
 * 
 * Permission is hereby granted, free of charge, to any person obtaining a copy of
 * this software and associated documentation files (the "Software"), to deal in
 * the Software without restriction, including without limitation the rights to
 * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
 * the Software, and to permit persons to whom the Software is furnished to do so,
 * subject to the following conditions:
 * 
 * The above copyright notice and this permission notice shall be included in all
 * copies or substantial portions of the Software.
 */
package com.vulgarsdk.captcha;

/**
 * 验证码发送和验证操作类，其它各种账号类型的验证都应该继承该去实现。
 * 通过本类指定必要的配置对象，如指定CaptchaSession、CaptchaSender、CaptchaSetting的具体实现，以及验证码信息所使用的session key。
 * @author mo_yq5
 * @since 2016年1月10日
 */
public abstract class CaptchaVerifierAbstract implements CaptchaVerifier {
	
	/**
	 * 此类验证使用的session对象
	 */
	protected CaptchaSession session;
	
	/**
	 * 此类验证使用的具体发送实现
	 */
    protected CaptchaSender sender;
    
    /**
     * 此类验证使用的验证配置信息
     */
    protected CaptchaSetting setting;
    
    /**
     * 此类验证的验证码信息使用的session key，指定不同的值，避免与其它验证类使用相同的key
     */
    protected String sessionKey;
    
	/**
	 * 获取此类验证使用的session对象
	 * @return the session
	 */
	public CaptchaSession getSession() {
		return session;
	}
	
	/**
	 * 指定此类验证使用的session对象
	 * @param session the session to set
	 */
	public void setSession(CaptchaSession session) {
		this.session = session;
	}
	
	/**
	 * 获取此类验证使用的具体发送实现
	 * @return the sender
	 */
	public CaptchaSender getSender() {
		return sender;
	}
	
	/**
	 * 指定此类验证使用的具体发送实现
	 * @param sender the sender to set
	 */
	public void setSender(CaptchaSender sender) {
		this.sender = sender;
	}
	
	/**
	 * 获取此类验证使用的验证配置信息
	 * @return the setting
	 */
	public CaptchaSetting getSetting() {
		return setting;
	}
	
	/**
	 * 此类验证使用的验证配置信息
	 * @param setting the setting to set
	 */
	public void setSetting(CaptchaSetting setting) {
		this.setting = setting;
	}
	
	/**
	 * 此类验证的验证码信息使用的session key
	 * @return the sessionKey
	 */
	public String getSessionKey() {
		return sessionKey;
	}
	
	/**
	 * 指定此类验证的验证码信息使用的session key，指定不同的值，避免与其它验证类使用相同的key
	 * @param sessionKey
	 */
	public void setSessionKey(String sessionKey) {
		this.sessionKey = sessionKey;
	}

}
